GROUP BYとは?ぐるーぷばい
GROUP BYとは、SQL(データベースに問い合わせる言語)のSELECT文で、指定した列の値が同じ行どうしを一つのグループにまとめる指定。日本語にすると「〜ごとに」にあたる。AVG(平均)・SUM(合計)・COUNT(件数)などの集約関数と組み合わせて、グループごとの集計結果を1行ずつ出す。SELECTの後に書けるのは、GROUP BYに指定した列か、集約関数で集計した値だけである。
最終更新:2026-10-10
この語が出る過去問を解く →背景
表に記録されるのは一件一件の取引や得点で、そのままでは「店ごとの売上」「学生ごとの平均点」は分からない。行を全部取り出してから別のプログラムで集計すると、データが大きいほど手間も通信量も増える。そこで、まとめる単位をSQLの中で指定し、データベースの側で集計まで済ませられるようにした。
具体例
得点(学生番号, 科目, 点数)という表で「SELECT 学生番号, AVG(点数) FROM 得点 GROUP BY 学生番号」と書けば、「得点表を学生番号ごとにまとめ、学生番号と平均点を出せ」という意味になり、学生1人につき1行の結果が返る。ローソンのような店舗の多いチェーンでも、売上の表を店舗コードごとにまとめれば、店ごとの1日の売上合計が一度に得られる。
試験での引っ掛け
まとめる単位の取り違えが狙われる。「クラスと教科の組合せごとの平均」ならGROUP BYにクラス名と教科名の両方を書き、学生番号まで加えると学生1人ごとの集計に細かくなりすぎる。GROUP BYに書いていない列をSELECTに並べると誤り。また、GROUP BYは並び順を保証しないので、順番が要るならORDER BY(並べ替えの指定)を別に書く。
関連用語
出た過去問
出典:令和元年度 秋期 基本情報技術者試験 午前 問26(IPA)
出典:平成31年度 春期 基本情報技術者試験 午前 問27(IPA)
"中間テスト"表からクラスごと、教科ごとの平均点を求め、クラス名、教科名の昇順に表示するSQL文中のaに入れる字句はどれか。 中間テスト(クラス名、教科名、学生…
正解:GROUP BY クラス名, 教科名 ORDER BY クラス名, 教科名
要点:GROUP BYは集計の単位、ORDER BYは並べ替えの順序
クラスと教科の組合せごとに平均を出すので、GROUP BYにはクラス名と教科名の両方を指定する。学生番号まで含めると学生1人ごとの集計になってしまい、求める粒度と合わない。並び順の指定はクラス名、教科名の昇順なので、ORDER BYにはこの2つを順に書く。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。